package cn.lin.util;

import com.aspose.words.Document;
import com.aspose.words.ImageSaveOptions;
import com.aspose.words.PageSet;
import com.aspose.words.SaveFormat;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author hx
 * @date 2024/12/3 11:31
 */
public class WordUtil{

    public static List<String> word2Png(String filePath) throws Exception {
        // 加载文档
        Document doc = new Document(filePath);

        // 设置图像保存选项
        ImageSaveOptions options = new ImageSaveOptions(SaveFormat.PNG);
        options.setResolution(300); // 设置输出图像的分辨率

        List<String> urls = new ArrayList<String>();

        // 遍历每一页并保存为PNG
        for (int pageIdx = -1; pageIdx < doc.getPageCount()-1; pageIdx++) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();

            // 更新选项以指向下一页
            options.setPageSet(new PageSet(pageIdx + 1));

            // 使用Save方法和指定的选项保存当前页到字节数组输出流
            doc.save(baos, options);

            // 准备文件名
            String fileName = (pageIdx + 1) + ".png";

            // 将字节数组转换为输入流
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

            // 上传到OSS并获取URL
            String url = OSSUtil.upload(fileName, bais);

            // 添加URL到列表
            urls.add(url);

            // 清空字节数组输出流
            baos.close();
        }

        //返回存储图片路径的集合
        return urls;
    }
}
